<?php

uses('sanitize');

class BannersController extends AppController
{

	public $name = 'Banners';
	
	
	/**
     * Custom validation rule for uploaded files.
     *
     *  @param Array $data CakePHP File info.
     *  @param Boolean $required Is this field required?
     *  @return Boolean
    */
    private function validateUploadedFile($data, $required = true) {

	    $upload_info = $data;

	    // No file uploaded.
	    if ($required && $upload_info['size'] <= 0) {
	            return false;
	    }

	    // Check for Basic PHP file errors.
	    if ($upload_info['error'] !== 0) {
	            return false;
	    }

	    // Finally, use PHP’s own file validation method.
	    return is_uploaded_file($upload_info['tmp_name']);

    }

	public function index($idioma = NULL)
	{
		$this->verificaLogado();
		
		// Carrega Idiomas
		$this->loadModel( 'Idioma' );
		$dadosIdioma = $this->Idioma->find( 'list', array(
			'conditions' => array(
				"Idioma.ATIVO" => "S"
			),
			'fields' => array(
				'Idioma.CD_IDIOMA',
				'Idioma.NOME'
			)
		) );
		$this->set( 'dadosIdioma', $dadosIdioma );
		// Fim de Carrega Idiomas
		
		$urlcms = Configure::read( 'cms.urlPortal' );
		$this->set( 'urlcms', $urlcms );
		
		if ($idioma != NULL) {
			$dadosBanners = $this->Banner->find( 'all', array(
				'conditions' => array(
					'Banner.CD_IDIOMA' => $idioma ) 
				) 
			);
			$this->set( 'dadosBanners', $dadosBanners );

		}else{
			$dadosBanners = $this->Banner->find( 'all' );
			$this->set( 'dadosBanners', $dadosBanners );
		}
		
		
		

		$caminhoSite = Configure::read( 'cms.urlSite' ) . 'img/bannerGira/';
		$this->set( 'caminhoSite', $caminhoSite );

	}
	
	public function novo() {
		$this->verificaLogado();
		
		$this->loadModel( 'Idioma' );
		$dadosIdioma = $this->Idioma->find( 'list', array(
			'conditions' => array(
				"Idioma.ATIVO" => "S"
			),
			'fields' => array(
				'Idioma.CD_IDIOMA',
				'Idioma.NOME'
			)
		) );
		$this->set( 'dadosIdioma', $dadosIdioma );

		if ( !empty( $this->data ) ) {

			$fileManipulado = $this->data['Banner']['imagem'];
			$this->data = Sanitize::clean($this->data);
			$this->data['Banner']['imagem'] = $fileManipulado;

			if ($this->validateUploadedFile($this->data['Banner']['imagem'], true)) {
				
				$uploaddir = Configure::read( 'cms.caminhoPortal' ) . 'img' . DS . 'bannerGira//';
				//$fileManipulado = $this->data['Banner']['imagem'];

				if ( !is_dir($uploaddir) ) {
					mkdir ($uploaddir, 0755);
					chmod ($uploaddir, 0755);
				}

				$arquivo = basename($this->params["data"]["Banner"]["imagem"]["name"]);
				$uploadfile = substr($uploaddir, 0, -1) . ereg_replace("[^a-zA-Z0-9_+.-]", "", strtr($arquivo, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
				
				$this->data['Banner']['imagem'] = $arquivo;

				if ( $this->Banner->save( $this->data ) ) {
	
					if (move_uploaded_file($fileManipulado['tmp_name'], $uploadfile)) {
						$this->registraLogs( null, 'ENVIOU BANNER: ' . $this->data[ 'Banner' ][ 'titulo' ] );
						
						$this->Session->setFlash( 'Banner enviado com sucesso!' );
						$this->redirect( array(
							'action' => 'index'
						) );
					}else{
						$this->Session->setFlash( 'Banner Salvo, mas c/ erros no Upload' );
					}
					
				}
			}else{
				$this->Session->setFlash( 'Erro com arquivo enviado, favor verificar seu arquivo.' );
			}

		}
	}
	
	public function editar( $cd_banner = null )
	{
		$this->verificaLogado();
		
		$this->loadModel( 'Idioma' );
		$dadosIdioma = $this->Idioma->find( 'list', array(
			'conditions' => array(
				"Idioma.ATIVO" => "S"
			),
			'fields' => array(
				'Idioma.CD_IDIOMA',
				'Idioma.NOME'
			)
		) );
		$this->set( 'dadosIdioma', $dadosIdioma );
		
		if ( empty( $this->data ) ) {
			$this->data = $this->Banner->read();
			$this->set( 'nomeImagem', $this->data['Banner']['imagem'] );
		} else {
			$this->Banner->cd_banner = $cd_banner;

			// Se foi enviado novo arquivo, o antigo sera apagado
			if ($this->data['Banner']['imagem']['name'] != '') {

				$arquivo = Configure::read( 'cms.caminhoPortal' ) . 'img' . DS . 'bannerGira' . DS . $this->data['Banner']['nomeImagem'];
	            if(file_exists($arquivo)){
	              unlink($arquivo);
	            }
	            
				$fileManipulado = $this->data['Banner']['imagem'];
				$this->data = Sanitize::clean($this->data);
				$this->data['Banner']['imagem'] = $fileManipulado;
	
				if ($this->validateUploadedFile($this->data['Banner']['imagem'], true)) {
					
					$uploaddir = Configure::read( 'cms.caminhoPortal' ) . 'img' . DS . 'bannerGira//';
					//$fileManipulado = $this->data['Banner']['imagem'];
	
					if ( !is_dir($uploaddir) ) {
						mkdir ($uploaddir, 0755);
						chmod ($uploaddir, 0755);
					}
	
					$arquivo = basename($this->params["data"]["Banner"]["imagem"]["name"]);
					$uploadfile = substr($uploaddir, 0, -1) . ereg_replace("[^a-zA-Z0-9_+.-]", "", strtr($arquivo, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
					
					$this->data['Banner']['imagem'] = $arquivo;
	
					if ( $this->Banner->save( $this->data ) ) {
		
						if (move_uploaded_file($fileManipulado['tmp_name'], $uploadfile)) {
							$this->registraLogs( null, 'ALTEROU BANNER: ' . $this->data[ 'Banner' ][ 'titulo' ] );
							
							$this->Session->setFlash( 'Banner alterado com sucesso!' );
							$this->redirect( array(
								'action' => 'index'
							) );
						}else{
							$this->Session->setFlash( 'Banner Alterado, mas c/ erros no Upload' );
						}
						
					}
				}else{
					$this->Session->setFlash( 'Erro com arquivo enviado, favor verificar seu arquivo.' );
				}	            

			}else{
				$this->data['Banner']['imagem'] = $this->data['Banner']['nomeImagem'];
				
				if ( $this->Banner->save( $this->data ) ) {
					$this->registraLogs( null, 'ALTEROU BANNER: ' . $this->data[ 'Banner' ][ 'titulo' ] );

					$this->Session->setFlash( 'Banner alterado com sucesso!' );
					$this->redirect( array(
						'action' => 'index'
					) );
				}
			}
		}
	}


	public function apagar( $cd_banner )
	{
		$this->verificaLogado();
		
		$nomeBanner = $this->Banner->find( 'first', array(
			'conditions' => array(
				'Banner.cd_banner' => $cd_banner
			)
		) );
		
		if ( $this->Banner->delete( $cd_banner, false ) ) { 
			$arquivo = Configure::read( 'cms.caminhoPortal' ) . 'img' . DS . 'bannerGira' . DS . $nomeBanner[ 'Banner' ][ 'imagem' ];

	          if(file_exists($arquivo)){
	            unlink($arquivo);
	          }

			$this->registraLogs( null, 'APAGOU BANNER: ' . $nomeBanner[ 'Banner' ][ 'titulo' ] );
			
			$this->Session->setFlash( 'Banner apagado com sucesso' );
			$this->redirect( array(
				'action' => 'index'
			) );
		}
	
	}
	

}
?>
